SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
CREATE Procedure [dbo].[SP_TCCOMP_RETE_I03]
/*-------------------------------------------------------*/
/*---Empresa              : OFISIS S.A.                --*/
/*---Cliente              : OFISIS S.A.                --*/
/*---Sistema              : Tesoreria                  --*/
/*---M«dulo               : Empresa                    --*/
/*---Programa             : Copia Comp. Retenci½n      --*/
/*---Script               : ttdocp_a.sql               --*/
/*---Nombre SP            : SP_TCCOMP_RETE_I03         --*/
/*---Desarrollado por     : Carlos Marquez E.	        --*/
/*---Fecha Creaci«n       : 09/08/2005                 --*/
/*---Base Datos           : Microsoft Sql Server       --*/
/*---Versi«n              : 8.0                        --*/
/*---Invoca a SP          :                            --*/
/*-------------------------------------------------------*/
/*-------------------------------------------------------*/
/*---Modificado 1 por     : 							--*/
/*---Fecha Modificaci«n   :								--*/
/*---Detalle Modificaci«n :								--*/
/*-------------------------------------------------------*/
/*-------------------------------------------------------*/
/*---Modificado 2 por     : 							--*/
/*---Fecha Modificaci«n   :								--*/
/*---Detalle Modificaci«n :								--*/
/*-------------------------------------------------------*/
/*---Modificado 3 por     : 							--*/
/*---Fecha Modificaci«n   :								--*/
/*---Detalle Modificaci«n :								--*/
/*-------------------------------------------------------*/
/*-------------------------------------------------------*/
/*---Comentarios   Copia Comprobante de Retenci½n      --*/
/*---              sin modificar el correlativo        --*/
/*---        y genera el asiento contable              --*/
/*-------------------------------------------------------*/
/*-------------------------------------------------------*/
/*---Drop Proc SP_TCCOMP_RETE_I03                      --*/
/*---Grant all on SP_TCCOMP_RETE_I03 to public         --*/ 
/*---SP_TCCOMP_RETE_I03                                --*/
/*-------------------------------------------------------*/
 @ISCO_EMPR       	TD_VC_002, 
 @ISCO_USUA_MODI  	TD_VC_008_USUA,
 @ISNU_COMP_ORIG	TD_VC_020,
 @ISNU_COMP_DEST	TD_VC_020
	As
Declare
	@VSTI_DOCU_RETE	TD_VC_003,
	@VSCO_BANC		TD_VC_003,
	@VSNU_CNTA_BANC TD_VC_020,
	@VSCO_CAJA		TD_VC_020,
	@VSAA_BACA		TD_VC_004,
	@VSMM_BACA		TD_VC_002,
	@VSNU_COMP_BACA	TD_VC_020,
	@VSCO_PROV		TD_VC_020,
	@VNNU_SECU		TD_IN_001,
	@VDFE_COMP_RETE TD_DT_001,
	@VSCO_USUA_RETE TD_VC_008,
	@VNPA_ANNO		TD_IN_001,
	@VNPA_MESE		TD_IN_001,
	@VSCO_UNID_CONC TD_VC_003,
	@VSCO_OPRC_CNTB TD_VC_003,
	@VSCO_TIAU_PROV	TD_VC_001



 Begin Tran SP_TCCOMP_RETE_I03
 
	Select @VSTI_DOCU_RETE = TI_DOCU
	From TTDOCU_CNTB
	Where ST_DOCU_0021 = 'S'


	Select @VSCO_TIAU_PROV = CO_TIAU_PROV
	From TMPARA_TESO
	Where CO_EMPR = @ISCO_EMPR

	
	Select	@VSCO_BANC = CO_BANC, @VSNU_CNTA_BANC = NU_CNTA_BANC, @VSCO_CAJA = CO_CAJA,
			@VSAA_BACA = AA_BACA, @VSMM_BACA = MM_BACA, @VSNU_COMP_BACA = NU_COMP_BACA, @VSCO_PROV = CO_PROV,
			@VDFE_COMP_RETE = FE_COMP_RETE,	@VSCO_USUA_RETE = CO_USUA_CREA,
			@VNPA_ANNO	= Convert(Int, AA_BACA),
			@VNPA_MESE	= Convert(Int, MM_BACA)
	From 	TCCOMP_RETE
	Where CO_EMPR = @ISCO_EMPR
	AND NU_COMP_RETE = @ISNU_COMP_ORIG

	-- Cabecera Comprobante Retencion 
	Insert Into TCCOMP_RETE(CO_EMPR, NU_COMP_RETE, FE_COMP_RETE, CO_MONE, CO_PROV, NO_PROV,
						 NU_RUCC, FA_TIPO_CAMB, CO_BANC, NU_CNTA_BANC, 
						CO_CAJA, AA_BACA, MM_BACA, NU_COMP_BACA, NU_DOCU, 
						TI_SITU, 
						CO_USUA_CREA, CO_USUA_MODI)
	Select 	CO_EMPR, @ISNU_COMP_DEST, FE_COMP_RETE, CO_MONE, CO_PROV, NO_PROV,
					 NU_RUCC, FA_TIPO_CAMB, CO_BANC, NU_CNTA_BANC, 
					CO_CAJA, AA_BACA, MM_BACA, NU_COMP_BACA, NU_DOCU, 
					TI_SITU, 
					@ISCO_USUA_MODI, @ISCO_USUA_MODI
	From	TCCOMP_RETE
	Where 	CO_EMPR = @ISCO_EMPR
	And	NU_COMP_RETE = @ISNU_COMP_ORIG

	If @@error <> 0
	Begin
		Rollback Tran SP_TCCOMP_RETE_I03
		Return
	End    

	-- Detalle Comprobante Retencion 
	Insert Into TDCOMP_RETE
	(CO_EMPR, NU_COMP_RETE, NU_SECU, 
	TI_DOCU, NU_DOCU, FE_EMIS, 
	IM_TOTA_CONV, IM_RETE_CONV, IM_PAGO_CONV, IM_COMP_PAGO, 
	CO_USUA_CREA, CO_USUA_MODI)
	Select 	CO_EMPR, @ISNU_COMP_DEST, NU_SECU, 
	TI_DOCU, NU_DOCU, FE_EMIS, 
	IM_TOTA_CONV, IM_RETE_CONV, IM_PAGO_CONV, IM_COMP_PAGO, 
	@ISCO_USUA_MODI, @ISCO_USUA_MODI
	From	TDCOMP_RETE
	Where 	CO_EMPR = @ISCO_EMPR
	And	NU_COMP_RETE = @ISNU_COMP_ORIG

	If @@error <> 0
	Begin
		Rollback Tran SP_TCCOMP_RETE_I03
		Return
	End    

	-- Documentos Proveedor--
	Insert Into TMDOCU_PROV
	(CO_EMPR, CO_PROV, CO_TIPO_DOCU, NU_DOCU_PROV, ST_ORIG_COSE, CO_TIPO_OPER, 
	CO_COND_PAGO, CO_UNID_CONC, NU_ASTO, FE_VENC, FE_EMIS, 
	FE_PROG_PAGO, FE_REGI_COMP, FE_RECE, FA_TIPO_CAMB, 	FA_CAMB_EXTR, 
	CO_MONE, IM_BRUT_AFEC, IM_BRUT_INAF, IM_GAFI, IM_MORA, IM_FLET, 
	ST_AFEC_GAFI, ST_AFEC_MORA, ST_AFEC_FLET, ST_DCT1_BRAF, ST_DCT1_BRIN, ST_DCT1_GAFI, ST_DCT1_MORA, ST_DCT1_FLET, ST_DCT2_BRAF, ST_DCT2_BRIN, ST_DCT2_GAFI, ST_DCT2_MORA, ST_DCT2_FLET, 
	PC_DCT1, IM_DCT1, PC_DCT2, IM_DCT2, CO_IMP1, PC_IMP1, IM_IMP1, CO_IMP2, PC_IMP2, IM_IMP2, CO_IMP3, PC_IMP3, IM_IMP3, IM_TOTA, IM_PAGA,
	TI_DOCU_ORIG, NU_DOCU_ORIG, FE_DOCU_ORIG, DE_OBSE, 
	CO_ESTA_DOCU, NU_REND_GAST, FE_REND_GAST, 
	NU_CANJ, NU_RENO, ST_CONT, 
	NU_PROC, TI_PROV, NU_COMP_SERV, NU_CORR_COMP, NU_CORR_PROV, 
	PC_SCRF, IM_SCRF, IM_SCF1, IM_SCF2, IM_SCF3, 
	CO_MODE_DIST, ST_REND_COMP, NU_SREN_GAST, NU_IMPO, NU_DEPO_DETR, FE_DEPO_DETR, 
	CO_ACTI_DETR, CO_TIOP_DETR, ST_SUJE_DETR, CO_USUA_CREA, CO_USUA_MODI)
	Select 	CO_EMPR, CO_PROV, CO_TIPO_DOCU, @ISNU_COMP_DEST, ST_ORIG_COSE, CO_TIPO_OPER, 
	CO_COND_PAGO, CO_UNID_CONC, NU_ASTO, FE_VENC, FE_EMIS, 
	FE_PROG_PAGO, FE_REGI_COMP, FE_RECE, FA_TIPO_CAMB, 	FA_CAMB_EXTR, 
	CO_MONE, IM_BRUT_AFEC, IM_BRUT_INAF, IM_GAFI, IM_MORA, IM_FLET, 
	ST_AFEC_GAFI, ST_AFEC_MORA, ST_AFEC_FLET, ST_DCT1_BRAF, ST_DCT1_BRIN, ST_DCT1_GAFI, ST_DCT1_MORA, ST_DCT1_FLET, ST_DCT2_BRAF, ST_DCT2_BRIN, ST_DCT2_GAFI, ST_DCT2_MORA, ST_DCT2_FLET, 
	PC_DCT1, IM_DCT1, PC_DCT2, IM_DCT2, CO_IMP1, PC_IMP1, IM_IMP1, CO_IMP2, PC_IMP2, IM_IMP2, CO_IMP3, PC_IMP3, IM_IMP3, IM_TOTA, IM_PAGA,
	TI_DOCU_ORIG, NU_DOCU_ORIG, FE_DOCU_ORIG, DE_OBSE, 
	CO_ESTA_DOCU, NU_REND_GAST, FE_REND_GAST, 
	NU_CANJ, NU_RENO, ST_CONT, 
	NU_PROC, TI_PROV, NU_COMP_SERV, NU_CORR_COMP, NU_CORR_PROV, 
	PC_SCRF, IM_SCRF, IM_SCF1, IM_SCF2, IM_SCF3, 
	CO_MODE_DIST, ST_REND_COMP, NU_SREN_GAST, NU_IMPO, NU_DEPO_DETR, FE_DEPO_DETR, 
	CO_ACTI_DETR, CO_TIOP_DETR, ST_SUJE_DETR, @ISCO_USUA_MODI, @ISCO_USUA_MODI
	From	TMDOCU_PROV
	Where 	CO_EMPR = @ISCO_EMPR
	 And	CO_TIPO_DOCU = @VSTI_DOCU_RETE
	 And	NU_DOCU_PROV = @ISNU_COMP_ORIG

	If @@error <> 0
	Begin
		Rollback Tran SP_TCCOMP_RETE_I03
		Return
	End    


	If @VSCO_CAJA IS NULL Or Ltrim(Rtrim(IsNull(@VSCO_CAJA,''))) = ''
	Begin
		Update  TDMOVI_BANC set NU_DOCU_ENTI = @ISNU_COMP_DEST
		Where   CO_EMPR = @ISCO_EMPR
		And CO_BANC =  @VSCO_BANC
		And NU_CNTA_BANC = @VSNU_CNTA_BANC
		And AA_BNCO = @VSAA_BACA
		And MM_BNCO = @VSMM_BACA
		And TI_MOVI_BANC = 'E'
		And NU_COMP_BANC = @VSNU_COMP_BACA
		And TI_ENTI = @VSCO_TIAU_PROV
		And CO_ENTI = @VSCO_PROV
		And TI_DOCU_ENTI = @VSTI_DOCU_RETE
		And NU_DOCU_ENTI = @ISNU_COMP_ORIG

		If @@error <> 0
		Begin
			Rollback Tran SP_TCCOMP_RETE_I03
			Return
		End    


		Select	@VSCO_UNID_CONC = Max(t1.CO_UNID_CONC),
				@VSCO_OPRC_CNTB = Max(t2.CO_OPRC_CNTB)
		From	TCMOVI_BANC T1, TDTIPO_OPER T2
		Where   t1.CO_EMPR = @ISCO_EMPR
		And t1.CO_BANC =  @VSCO_BANC
		And t1.NU_CNTA_BANC = @VSNU_CNTA_BANC
		And t1.AA_BNCO = @VSAA_BACA
		And t1.MM_BNCO = @VSMM_BACA
		And t1.TI_MOVI_BANC = 'E'
		And t1.NU_COMP_BANC = @VSNU_COMP_BACA
		And t1.CO_EMPR = t2.CO_EMPR
		And t1.CO_TIPO_OPER = t2.CO_TIPO_OPER

		/* Generaci½n del Asiento Contable */

		Delete TXMVTO_CNTB
		Where CO_EMPR = @ISCO_EMPR
		And NU_CNTB_EMPR = 1
		And CO_UNID_CNTB = @VSCO_UNID_CONC
		And CO_OPRC_CNTB =  @VSCO_OPRC_CNTB
		And NU_ANNO = @VNPA_ANNO
		And NU_MESE = @VNPA_MESE
		And NU_ASTO = '00000' + RIGHT(@VSNU_COMP_BACA, 5) 
		If @@error <> 0
		Begin
			Rollback Tran SP_TCCOMP_RETE_I03
			Return
		End    


		Exec SP_TTPROC_INTE_I01 @ISCO_EMPR, @VSCO_USUA_RETE, @VSCO_BANC, @VSNU_CNTA_BANC, Null, @VNPA_ANNO, @VNPA_MESE, @VDFE_COMP_RETE, @VSNU_COMP_BACA, 'I04', @VSCO_UNID_CONC, 'S'
		If @@error <> 0
		Begin
			Rollback Tran SP_TCCOMP_RETE_I03
			Return
		End    


		Delete TTINTE_CNDE
		Where CO_EMPR = @ISCO_EMPR
			And NU_CNTB_EMPR = 1
			And CO_UNID_CNTB = @VSCO_UNID_CONC
			And CO_OPRC_CNTB =  @VSCO_OPRC_CNTB
			And NU_ANNO = @VNPA_ANNO
			And NU_MESE = @VNPA_MESE
			And NU_ASTO = @VSNU_COMP_BACA
		If @@error <> 0
		Begin
			Rollback Tran SP_TCCOMP_RETE_I03
			Return
		End    


	End
	Else
	Begin
		Update  TDMOVI_CAJA set NU_DOCU_ENTI = @ISNU_COMP_DEST
		Where   CO_EMPR = @ISCO_EMPR
		And CO_CAJA =  @VSCO_CAJA
		And AA_CAJA = @VSAA_BACA
		And MM_CAJA = @VSMM_BACA
		And TI_MOVI = 'E'
		And NU_COMP_CAJA = @VSNU_COMP_BACA
		And TI_ENTI = @VSCO_TIAU_PROV
		And CO_ENTI = @VSCO_PROV
		And TI_DOCU_ENTI = @VSTI_DOCU_RETE
		And NU_DOCU_ENTI = @ISNU_COMP_ORIG

		If @@error <> 0
		Begin
			Rollback Tran SP_TCCOMP_RETE_I03
			Return
		End    

		/* Generaci½n del Asiento Contable */

		Delete TXMVTO_CNTB
		Where CO_EMPR = @ISCO_EMPR
		And NU_CNTB_EMPR = 1
		And CO_UNID_CNTB = @VSCO_UNID_CONC
		And CO_OPRC_CNTB =  @VSCO_OPRC_CNTB
		And NU_ANNO = @VNPA_ANNO
		And NU_MESE = @VNPA_MESE
		And NU_ASTO = '00000' + RIGHT(@VSNU_COMP_BACA, 5) 
		If @@error <> 0
		Begin
			Rollback Tran SP_TCCOMP_RETE_I03
			Return
		End    

		Exec SP_TTPROC_INTE_I01 @ISCO_EMPR, @VSCO_USUA_RETE, @VSNU_COMP_BACA, Null, Null, @VNPA_ANNO, @VNPA_MESE, @VDFE_COMP_RETE, @VSNU_COMP_BACA, 'I07', @VSCO_UNID_CONC, 'S'
		If @@error <> 0
		Begin
			Rollback Tran SP_TCCOMP_RETE_I03
			Return
		End    


		Delete TTINTE_CNDE
		Where CO_EMPR = @ISCO_EMPR
			And NU_CNTB_EMPR = 1
			And CO_UNID_CNTB = @VSCO_UNID_CONC
			And CO_OPRC_CNTB =  @VSCO_OPRC_CNTB
			And NU_ANNO = @VNPA_ANNO
			And NU_MESE = @VNPA_MESE
			And NU_ASTO = @VSNU_COMP_BACA
		If @@error <> 0
		Begin
			Rollback Tran SP_TCCOMP_RETE_I03
			Return
		End    


	End

	-- Borra Comprobante de Retencion 
	Delete TDCOMP_RETE
	Where CO_EMPR = @ISCO_EMPR
	And	  NU_COMP_RETE = @ISNU_COMP_ORIG
	If @@error <> 0
	Begin
		Rollback Tran SP_TCCOMP_RETE_I03
		Return
	End    

	Delete TCCOMP_RETE
	Where CO_EMPR = @ISCO_EMPR
	And	  NU_COMP_RETE = @ISNU_COMP_ORIG
	If @@error <> 0
	Begin
		Rollback Tran SP_TCCOMP_RETE_I03
		Return
	End    


	Delete TDPROG_PAGO
	Where 	CO_EMPR = @ISCO_EMPR
	 And	CO_TIPO_DOCU = @VSTI_DOCU_RETE
	 And	NU_DOCU_PROV = @ISNU_COMP_ORIG
	If @@error <> 0
	Begin
		Rollback Tran SP_TCCOMP_RETE_I03
		Return
	End    


	Delete TMDOCU_PROV
	Where 	CO_EMPR = @ISCO_EMPR
	 And	CO_TIPO_DOCU = @VSTI_DOCU_RETE
	 And	NU_DOCU_PROV = @ISNU_COMP_ORIG
	If @@error <> 0
	Begin
		Rollback Tran SP_TCCOMP_RETE_I03
		Return
	End    


	
 Commit Tran SP_TCCOMP_RETE_I03 
/*-------------------------- Fin ------------------------------*/


GO
